package com.hq.myapplicationdemo.utils;

/**
 * 版权： 版权所有
 * 版本：1.0
 * 创建日期：2019/3/22 15
 * 描述：数字处理
 */

import java.text.DecimalFormat;
import java.text.NumberFormat;

public class NumericUtils {

//    /**
//     * 将数字转化成人类友好的方式
//     *
//     //* (1000，   3) -> 1千
//     * (1000，   4) -> 1000
//     * (11 000， 4) -> 1.1万
//     *
//     * @param number
//     * @param numberSystem 达到多少位数后开始转换，大于3有效
//     * @return
//     */
//    public static String shorthand(int number, int numberSystem){
//        SparseArray<String> baseMap = new SparseArray<>(3);
//        baseMap.put(3, "千");
//        baseMap.put(4, "万");
//
//        double base = Math.pow(10, numberSystem);
//
//        if (number >= base){
//            double v = (number / base * 100) / 100;
//            String unit = baseMap.get(numberSystem);
//            NumberFormat format = new DecimalFormat("#.##");
//
//            return format.format(v).replaceFirst("\\.[0]+$", "") + unit;
//        }
//
//        return String.valueOf(number);
//    }

    /**
     * 将数字转化成人类友好的方式
     * <p>
     * (11 000) -> 1.1万
     *
     * @param number
     * @return
     */
    public static String shorthand(float number) {
        return shorthand(number,"####.###");
    }

    public static String shorthand(float number, String formatStr) {

        float value;
        String unit;

        if (number >= 10_000) {
            value = number / 10_000f;
            unit = "万";
        }

//        else if (number >= 1_000){
//            value = number / 1_000f;
//            unit = "千";
//        }
        else {
            value = (int) number;
            unit = "";
        }
        //元的 不保留小数点
        //万保留三位小数，不补0
        NumberFormat format = new DecimalFormat(formatStr);

        return format.format(value).replaceFirst("\\.[0]+$", "") + unit;
    }


    /**
     * 将数字转化成人类友好的方式
     * <p>
     * <p>
     * (11 000) -> 1.1万
     *
     * @param number
     * @return
     */
    public static String shorthand(double number) {
        return shorthand(number,"####.###");

    }

    public static String shorthand(double number, String formatStr) {


        double value;
        String unit;

        if (number >= 10_000) {
            value = number / 10_000f;
            unit = "万";
        }

//        else if (number >= 1_000){
//            value = number / 1_000f;
//            unit = "千";
//        }
        else {
            value = (int) number;
            unit = "";
        }
        //元的 不保留小数点
        //万保留三位小数，不补0
        NumberFormat format = new DecimalFormat(formatStr);

        return format.format(value).replaceFirst("\\.[0]+$", "") + unit;

    }

    public static String formatString2(String data) {

        float dataf = Float.parseFloat(data);
        DecimalFormat df = new DecimalFormat("#,###");
        return df.format(dataf);
    }

    public static String formatNum(float data) {

        NumberFormat format = new DecimalFormat("####.##");

        return format.format(data).replaceFirst("\\.[0]+$", "");
    }

}
